package com.softer.chengxin.corp.controller;

import com.softer.chengxin.common.domin.CommonResult;
import com.softer.chengxin.common.domin.ManagerPageResult;
import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.corp.domin.Corp;
import com.softer.chengxin.corp.domin.CorpDTO;
import com.softer.chengxin.corp.domin.ProDTO;
import com.softer.chengxin.corp.service.ManagerService;
import com.softer.chengxin.person.domin.Person;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

/**
 * @author wangxinrui
 * @date 2018/10/09
 */
@RestController
@RequestMapping("/api/ZG_CorpBaseInfo")
public class ManagerController {

    @Autowired
    private ManagerService managerService;

    /**
     * 主管部门查看企业主要人员信息
     *
     * @param qyId   企业no
     * @param duties 职位
     * @return 人员信息
     */
    @PostMapping(value = "/ZYRY")
    public Person zyry(@RequestParam("ID") String qyId, Integer duties) {
        return managerService.findZYRY(qyId, duties);
    }

    /**
     * 主管部门查看企业从业人员信息
     *
     * @param qyId  企业id
     * @param name  姓名
     * @param depId 部门id
     * @param page  页码
     * @return 结果
     */
    @PostMapping(value = "/CYRY")
    public ManagerPageResult cyry(@RequestParam("ID") String qyId, String name, String depId, Page page) {
        return managerService.findCYRY(qyId, page, name, depId);
    }

    /**
     * 查询该账号下管理的企业信息 条件查询
     *
     * @param qyName      企业名字
     * @param district    地区
     * @param cxDateBegin 查询开始时间
     * @param cxDateEnd   查询结束时间
     * @param state       状态
     * @return 企业信息
     */
    @PostMapping(value = "/qycx")
    public ManagerPageResult qycx(String qyName, Integer district, String cxDateBegin, String cxDateEnd, Integer state, Page page, HttpSession session) {
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        return managerService.findCorpByCondition(qyName, district, cxDateBegin, cxDateEnd, state, page, loginName);
    }

    /**
     * 该账号下管理区域的企业从业人员
     *
     * @param page   页码
     * @param qyName 企业名
     * @param name   从业人员姓名
     * @return 信息
     */
    @PostMapping(value = "/cyry")
    public ManagerPageResult findCYRY(Page page, String qyName, String name, HttpSession session) {

        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        return managerService.findPersonByCondition(loginName, name, qyName, page);
    }

    /**
     * 查询企业继续教育情况
     * @param corpId 企业id
     * @param name   姓名
     * @param page   页码
     * @return 结果
     */
    @PostMapping(value = "/getCorpTrain")
    public ManagerPageResult getCorpTrain(Integer corpId, String name, Page page) {

        return managerService.findTrain(corpId, name, page);
    }

    /**
     * 获取企业名列表
     *
     * @param session session
     * @return 结果
     */
    @PostMapping(value = "/getCorpNameList")
    public List<CorpDTO> getCorpNameList(HttpSession session) {
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)) {
            return new ArrayList<>();
        }
        return managerService.getCorpNameList(loginName);
    }

    /**
     * 获取项目名列表
     *
     * @param qyId 企业id
     * @return 结果
     */
    @PostMapping(value = "/getProNameList")
    public List<ProDTO> getProjectNameList(Integer qyId) {
        return managerService.getProjectNameList(qyId);
    }

    /**
     * 通过id查询企业信息
     *
     * @param id 企业id
     * @return 结果
     */
    @PostMapping(value = "/getCorpDetail")
    public Corp getCorpDetail(Integer id) {
        return managerService.getCorpDetail(id);
    }


    /**
     * 审批继续教育
     *
     * @param id    id
     * @param state 状态
     * @param yijian 意见
     * @return 结果
     */
    @PostMapping(value = "/SPTrain")
    public CommonResult spTrain(Integer id, Integer state, String yijian) {
        return managerService.spTrain(id, state, yijian);
    }

    /**
     * 查询企业继续教育信息
     *
     * @param page       页码
     * @param session    session
     * @param qyName     企业名
     * @param state      状态
     * @param department 培训部门
     * @return 结果
     */
    @PostMapping(value = "/getTrainList")
    public ManagerPageResult getTrainList(Page page, HttpSession session, String qyName, Integer state, Integer department) {
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        return managerService.getTrainList(loginName, page, qyName, state,department);
    }

    /**
     * 继续教育审批按钮  点击后显示的列表
     *
     * @param page    页码
     * @param session session
     * @return 结果
     */
    @PostMapping(value = "/getSPTrainList")
    public ManagerPageResult getSPTrainList(Page page, HttpSession session) {
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        return managerService.getSPTrainList(page, loginName);
    }

}
